home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Serious Software / Cherwell Scientific Demos / pro Fit / pro Fit 5.0 demo (fpu).sea / pro Fit 5.0 demo (fpu) / External Modules / External modules sources / C / proFit_interface.c < prev    next >
Text File  |  1996-04-17  |  48KB  |  2,044 lines

  1. /***************************************************************************************/
  2. /* proFit_interface.c                                                                  */
  3. /*                                                                                        */
  4. /*                                                                                     */
  5. /* Version history                                                                       */
  6. /* 15.12.95: orig 5.0A9 release                                                         */
  7. /* 20.02.96: added SetWindowInfo, SetBoxTitle, InputBox for strings                       */
  8. /* 10.03.96: added GetFunctionParamName, CancelEvent                                   */
  9. /* 15.03.96: added NumberToStr255, Str255ToNumber                                       */
  10. /* 17.03.96: added GetAndSetStatus                                                       */
  11. /* 24.03.96: added SetTextFileFormat, changed SaveDataAsText                           */
  12. /***************************************************************************************/
  13.  
  14. /**************************************************************************
  15. This file contains code that takes care of the communication between
  16. an external module and proFit.
  17.  
  18.  
  19. Everything that you need to know to produce an External Module for proFit
  20. can be found in the file proFit_interface.h
  21. Just include proFit_interface.h at the beginning of the file containing your
  22. code, as it is done in FunctionTemplate.c and ProgramTemplate.c.
  23. It is easier and faster if you use one of these files to create a new external module.
  24.  
  25.  
  26. You do not need to understand what is going on in this file proFit_interface.c, 
  27. unless you need to do very advanced and exotic things.
  28. **************************************************************************/
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. #ifndef __MEMORY__
  53. #include <Memory.h>
  54. #endif
  55. #ifndef __TEXTUTILS__
  56. #include <TextUtils.h>
  57. #endif
  58.  
  59. #include "proFit_interface.h"
  60.  
  61.  
  62. #define VERSIONNUMBER 1
  63. /* the version number of this implementation. proFit must know that. */
  64.  
  65.  
  66. /**************************************************************************/
  67. /* The following conditional statements prepare the use of a4-relative */
  68. /* addressing of global variables. The define the following symbols: */
  69. /*    A4_GLOBALS            defined if this module supports A4-relative globals */
  70. /*    EnterCodeResource()    A macro to be called upon entry of the resource */
  71. /*    ExitCodeResource()    A macro to be called upon exit of the resource */
  72. /**************************************************************************/
  73. #if ! (defined(powerc) || defined (__powerc))
  74.     #if defined(THINK_C) || defined(THINK_CPLUS)        /* use A4 globals only in Think C             */
  75.         #if __option(a4_globals)
  76.             #define A4_GLOBALS
  77.             #include <SetUpA4.h>
  78.             #ifndef EnterCodeResource
  79.                 #define EnterCodeResource() RememberA0(); SetUpA4()
  80.             #endif
  81.             #ifndef ExitCodeResource
  82.                 #define ExitCodeResource() RestoreA4()
  83.             #endif
  84.         #endif
  85.     #else
  86.         #ifdef __MWERKS__
  87.             #define A4_GLOBALS
  88.             #include <A4STUFF.h>    /* in CW7, A4Stuff defines EnterCodeResource and ExitCodeResource */
  89.             #ifndef EnterCodeResource
  90.                 #define EnterCodeResource() long oldA4 = SetCurrentA4()
  91.             #endif
  92.             #ifndef ExitCodeResource
  93.                 #define ExitCodeResource() SetA4(oldA4)
  94.             #endif
  95.         #endif
  96.     #endif
  97. #endif
  98. #ifndef EnterCodeResource
  99.     #define EnterCodeResource()
  100. #endif
  101. #ifndef ExitCodeResource
  102.     #define ExitCodeResource()
  103. #endif
  104. /**************************************************************************/
  105.  
  106.  
  107. /*    
  108.    The following struct is used as a parameter block to several routines
  109.    provided by proFit.
  110.    
  111.    The ExtModulesParamBlock (defined in proFit_paramBlk.h) provides a pointer to 
  112.    a routine that acts as a bottleneck for your calls and that uses a pointer to the
  113.    following struct as a parameter. The contents of the struct provide
  114.    information on which routine to call and its parameters.
  115.     
  116.    You do not have to implement all this yourself. This file
  117.    contains source code for calling all of the routines
  118.    provided by proFit. The List of the prototypes of all these routines is given
  119.    in proFit_interface.h and you can simply use them as they stand.
  120.  */
  121.  
  122.  
  123. #if defined(powerc) || defined (__powerc)
  124. #pragma options align=mac68k
  125. #endif
  126.  
  127. typedef struct
  128. {    OSErr    result;    /* noErr or error code */
  129.     short    what;    /* the operation */
  130.     /* The currently available values for "what" are:
  131.      * 1:    Obsolete. Used for "newCurve" in earlier versions.
  132.      * 2:    moveto 
  133.      * 3:     lineto 
  134.      * 4:    getGraphCoordinates 
  135.      * 5:    CreateNewGraph 
  136.      * 6:    Obsolete. Used for "NewDataSet" in earlier versions.
  137.      * 7:    Obsolete. Used for an earlier version of AddDataPoint
  138.      * 11:     random 
  139.      * 12:    TestStop
  140.      * 13:    write
  141.      * 14:    writeln
  142.      * 15:    WriteDouble
  143.      * 16:    alert
  144.      * 17:    input
  145.      * 18:    ask
  146.      * 19:    SetColumnName
  147.      * 20-23: xColumn, yColumn, xErrColumn, yErrColumn
  148.      * 24:    GetSelection
  149.      * 25:    GetData
  150.      * 26:    SetData
  151.      * 27:    ClearData
  152.      * 28:    TestData
  153.      * 29:  NumberInvalid
  154.      * 30:    SetParamLimits
  155.      * 31:    SetParamDefaultValue
  156.      * 32:    SetParamNames
  157.      * 33:    SetParamDefaults
  158.      * 34:  NrRows
  159.      * 35:  NrCols
  160.  
  161.      * 40:    StopExecution
  162.  
  163.      * 41:    Erf                                                    (v. 5 and later)                        
  164.      * 42:    Erfc                                                (v. 5 and later)
  165.      * 43:    function MarkX(i:integer):extended;                    (v. 5 and later)
  166.      * 44:    function MarkY(i:integer):extended;                    (v. 5 and later)
  167.      * 45:    procedure MarkCoords(i:integer; var x,y:extended);    (v. 5 and later)
  168.  
  169.      * 100:    CallFunction
  170.      * 101:    GetFunctionParam
  171.      * 102:    SetFunctionParam
  172.      * 103: CallProgram
  173.      * 104:    GetFunctionParamMode
  174.       * 105: GetNumFunctionParams
  175.      * 110:    Integral
  176.      * 111-114: maxima,minima,roots,derivative
  177.      * 115:    Fit
  178.      * 116-118:    SetFitDefaults,maximize,minimize                (v. 5 and later)
  179.  
  180.      * 120-124:chiSquared,numFitParams,fittedParams, covar,paramSD,
  181.  
  182.      * All following routines are available starting from pro Fit version 5 and later.
  183.      
  184.      * 125-126:SetErrorAnalysisDefaults, ConfidenceInterval                
  185.      * 130-133:calcStat, getBasics, getSkew, getMedian            
  186.      
  187.      * 135:        DoMenu
  188.  
  189.      * 150-154:    FrontWindow, NewWindow, SetCurrentWindow, GetCurrentWindow, CloseWindow
  190.      * 155-159:    FrontmostWindow, SaveWindow, SaveWindowAs, GetWindowID, GetWindowType
  191.      * 160-163:    GetNextWindow, OpenFile, OpenData, OpenText
  192.      * 164-165:    SaveDataAsText, SaveDrawingAs
  193.      * 166      : SetWindowTitle
  194.      * 167-168: PlaceWindow, BringWindowToFront
  195.      * 169      : Compile
  196.  
  197.      * 170-172:    SetDataWindowSize, GetColType, SetColType
  198.      * 173-177: SelectCells, SelectRows, RowSelected, CellSelected, SetCell
  199.      * 173-177: SelectCells, SelectRows, RowSelected, CellSelected, SetCell
  200.      * 178-182: GetCell, GetColumnName, SetDefaultColumns, GetColHandle, SetColHandle
  201.      
  202.      * 186-187:    SetBoxTitle, SetWindowInfo
  203.      
  204.      * 189:     SetTextFileFormat
  205.      * 190-192: CreateTextFile, CloseTextFile, WriteToTextFile
  206.      * 193-196: HandleEvent, DeactivateWindows, ActivateWindows, CancelEvent
  207.      * 197-199:    NumberToStr255, Str255ToNumber, GetAndSetStatus
  208.  
  209.      * 200-207:    SetLineStyle,SetFillPattern,SetArrowStyle,SetTextStyle
  210.                  SetDataPointStyle, SetBGDataPointStyle,SetLineColor,SetFillColor
  211.      * 208-222: DrawRect,DrawEllipse,DrawLine,DrawTextLine,DrawNumber,DrawDataPoint,OpenPolygon,ClosePolygon,
  212.                  CloseCurve, CloseDataSet,SetNewGraphRect,GroupBegin,Move,Line
  213.      * 223:        GetLastClickedCoordinates
  214.      * 224,225:    OpenCurve, OpenDataSet
  215.      * 226        DisableDrawingUpdates
  216.      * 227-229:    SetCurrentGraph, GetNextGraph, GetCurrentGraph
  217.      * 230-231:    GetGraphFrame, SetGraphFrame
  218.      * 232-245:    GetCurrentAxis,SetCurrentAxis,DeleteAxis,MakeNewAxis,SetRange,MakeTicks
  219.                  SetLabelsFormat,ClearTicks,ClearLabels,AddTick,SetLabel,SetLabelText
  220.                  SetAxisPosition,SetAxisAttributes
  221.      * 246:        SetGraphAttributes
  222.      * 247:        DrawPICT
  223.      * 248-249:    SetCurveFill, SetEBarStyle
  224.      * 250        AddDataPoint
  225.      */
  226.     union    {
  227.             struct    {    double        y,x;                    
  228.                     } v2;        /* lineto, moveto */
  229.             struct    {    double         *ymax, *ymin, *xmax, *xmin;    
  230.                     } v4;        /* getGraphCoordinates */
  231.             struct    {    double        xmin,xmax,ymin,ymax;
  232.                         short        xScaling,yScaling;    
  233.                     } v5;/* createNewGraph*/
  234.             struct    {    double        retval;        
  235.                     } v11;        /* random, xColumn, yColumn, xErrColumn, yErrColumn, ChiSquared */
  236.             struct    {    Boolean        retval;                    
  237.                     } v12;        /* executionstopped... */
  238.             struct    {    const unsigned char*   theMessage;               
  239.                     } v13;        /* write/writeln */
  240.             struct    {    double        d1;
  241.                     } v15;        /* writeNumber */
  242.             struct    {    const unsigned char*   theMessage;               
  243.                         Boolean     retval;
  244.                     } v16;        /* alert... */
  245.             struct    {    InputRec*    r;                       
  246.                         short        nrArgs;
  247.                         Boolean     retval;
  248.                     } v17;        /* MyInput */
  249.             struct    {    const unsigned char*   question;               
  250.                         short*        answer;
  251.                         Boolean     retval;
  252.                     } v18;        /* MyIntAsk */
  253.             struct    {    const unsigned char*   name;                   
  254.                         long        column;
  255.                     } v19;        /* SetColumnName */
  256.             struct    {    Rect           selectionRect;           
  257.                     } v24;        /* GetSelection */
  258.             struct    {    long        column;
  259.                         long        row;
  260.                         double       cellValue;               
  261.                     } v25;        /* GetData/SetData */
  262.             struct    {    long        column;
  263.                         long        row;
  264.                     } v27;        /* ClearData */
  265.             struct    {    long        column;
  266.                         long        row;
  267.                         Boolean        retval;                   
  268.                     } v28;        /* TestData */
  269.             struct  {    double        aNum;           
  270.                         Boolean        retval;
  271.                     } v29;        /* NumberInvalid */            
  272.             struct    {    double        ahigh, alow;
  273.                         short        paramIndex;        
  274.                     } v30;        /* SetParamLimits */
  275.             struct    {    double        aval;
  276.                         short        paramIndex;                
  277.                     } v31;        /* SetParamDefaultValue */
  278.             struct    {    const unsigned char*   aname;
  279.                         short        paramIndex;    
  280.                     } v32;        /* SetParamName */
  281.             struct    {    double        ahigh;
  282.                         double        alow;
  283.                         const unsigned char*   aname;
  284.                         short        amode;
  285.                         double        aval;
  286.                         short        paramIndex;        
  287.                     } v33;        /* SetParamDefaults */
  288.             struct  {   double        xval;           
  289.                           const unsigned char*   funcName;
  290.                           double        retval;
  291.                       } v100;        /* callfunction */
  292.             struct  {   short        paramIndex;
  293.                         const unsigned char*   funcName;
  294.                         double        retval;
  295.                     } v101;        /* getfunctionparam, getFunctionParamMode */
  296.             struct  {   double        pVal;
  297.                         short        paramIndex;
  298.                         const unsigned char*   funcName;
  299.                     } v102;        /* setfunctionparam */
  300.             struct  {    const unsigned char*   progName;
  301.                     } v103;        /* callProgram */
  302.             struct  {    const unsigned char*    funcName;
  303.                         double        retval;
  304.                     } v105;        /* getNumFunctionParams */
  305.             struct  {    short        numIterations;
  306.                         double        max,min;
  307.                         const unsigned char*   funcName;
  308.                         double        retval;
  309.                     } v110;        /* DoIntegrate */
  310.             struct  {    double        max,min;
  311.                         const unsigned char*   funcName;
  312.                         double        retval;
  313.                     } v111;        /* maxima,minima,roots,derivatives(min=xVal,max=scale) */     
  314.              struct  {    short        numFitParams;
  315.                     } v121;        /* numFitParams */     
  316.             struct    {    long        xCol, yCol, errCol;
  317.                         double        errVal;
  318.                         long        selectionOnly;
  319.                         const unsigned char*    funcName;
  320.                     } v115;        /* Fit */  
  321.             struct  {    short        paramIndex;
  322.                         double        retval;
  323.                     } v122;        /* fittedParams, paramSD  */     
  324.             struct  {    short        paramIndex1,paramIndex2;
  325.                         double        retval;
  326.                     } v124;        /* CovarMatrix */     
  327.             struct    {    void*        p[8];    /* pointers to routine parameters used by version 5.0 and later */
  328.                     } params;                /* The type of the parameters is specified in the implementation */
  329.                                             /* of the routines at the end of proFit_interface.c         */
  330.  
  331.     } u;
  332. } RunTimeParamRec;
  333. #if defined(powerc) || defined (__powerc)
  334. #pragma options align=reset
  335. #endif
  336.  
  337.  
  338.  
  339. #ifdef powerc
  340.  
  341.     /* under PowerPC, we allocate a static variable to hold the present parameter block */
  342.     ExtModulesParamBlock*    pbStorage;        /* a storage to hold pb as it was passed to main */
  343.     #define CallRunTimeProc(a) pbStorage->RunTimeProc(a)
  344.  
  345. #else
  346.     /* under 68k, there is no cool way to allocate a static variable to hold pb */
  347.     /* We must use the following trick, which should work on all compilers */
  348.     /* the following routine is never called. Rather, it is misused */
  349.     /* as local storage for pb */
  350.  
  351.     static short MyMemory(short i);
  352.  
  353.     /* to access the local storage for pb, use the following macro: */
  354.     #define pbStorage (*(ExtModulesParamBlock**)(&MyMemory))
  355.  
  356.     /* to call RunTimeProc through pbStorage, use the following macro: */
  357.     #define CallRunTimeProc(a) (*(*(ExtModulesParamBlock**)(&MyMemory))->RunTimeProc)(a)
  358. #endif
  359.  
  360.  
  361. /*****  the function main through which all calls to this external module go *****/
  362. /*                                                                                */
  363. /* under MPW, main should be the first function you compile and link             */
  364. /* Think C, Symantec C++ will provide glue code at the beginning of the code     */
  365. /* that jumps to main                                                             */
  366. /*                                                                                */
  367.  
  368. /*                            ***********************                                */
  369.  
  370.  
  371. /*         If you are debugging a module and are using DEBUG.c, you have  
  372.  *         to rename this function according to the prototype:
  373.  *            pascal void mainD(short selector, ExtModulesParamBlock* pb);
  374.  *        See DEBUG.c for more details.
  375.  */
  376.  
  377. pascal void main(short selector, ExtModulesParamBlock* pb)
  378. {
  379. #ifdef powerc
  380.     /* code warrior 7 or later supports the "export list" #pragma, we use it if it is available */
  381.     /* If it is not available, you may e.g. use a .exp file to export the entry point "main". */
  382.     /* "main" must be available when linking the shared library. See you compiler/linker's manual */
  383.     /* for details. */
  384.     #pragma export list main
  385. #endif
  386.  
  387.  
  388. #ifndef powerc
  389.     void*    p;
  390. #endif
  391.  
  392.     EnterCodeResource();
  393.  
  394. #ifdef powerc
  395.     pbStorage = pb;
  396. #else
  397.     p = &MyMemory;
  398.     *(ExtModulesParamBlock**)p = pb;
  399. #endif
  400.  
  401.     switch (selector) {
  402.     case setup:             pb->requiredGlobals = 0;
  403.                             pb->versionNumber = VERSIONNUMBER;
  404.                             if (sizeof(double) == 10) pb->codeType = CPU68noFPU;
  405.                             else if (sizeof(double) == 12) pb->codeType = CPU68FPU;
  406.                             else pb->codeType = CPUPowerPC;
  407.                             SetUp(&pb->moduleKind,pb->name,&pb->requiredGlobals,pb);
  408.                             break;
  409.     case funcInitialize:    pb->hasDerivatives = 0;
  410.                              InitializeFunc(&pb->hasDerivatives,
  411.                                 pb->descr1,pb->descr2,&pb->numberOfParams,
  412.                                 &pb->a0,pb);
  413.                             break;
  414.     case progInitialize:     InitializeProg(pb); break;
  415.     case progRun:             Run(pb); break;
  416.     case funcCheck:         pb->answer=Check(pb->paramNo,&pb->a0,pb); break;
  417.     case funcFirst:         First(*pb->a,pb); break;
  418.     case funcFunc:             Func(*pb->x,*pb->a,pb->y,pb); break;
  419.     case funcDerivatives:    Derivatives(*pb->x,*pb->a,*pb->dyda,pb); break;
  420.     case funcLast:             Last(pb); break;
  421.     case cleanUp:             CleanUp(pb); break;
  422.     default: break;
  423.     }
  424.  
  425.     ExitCodeResource();
  426. }
  427.  
  428. #ifndef powerc
  429.  
  430.     static short MyMemory(short i) { return i-1;}
  431.     /* comment see above */
  432.  
  433. #endif
  434.  
  435.  
  436. ExtModulesParamBlock* GetPb(void)
  437.     /* returns the current parameter block */
  438. {
  439.     return pbStorage;
  440. }
  441.  
  442.  
  443.  
  444. /* utility function to copy one string to another string.
  445.    The parameter "limit" gives the maximal length */
  446.  
  447. void SetPascalStr(Str255 s1, const Str255 s2, short limit)
  448. {
  449.     if (s2[0]<limit) limit=s2[0];
  450.     if (s1)
  451.     {
  452.         BlockMove(s2,s1,limit+1);
  453.         s1[0]=limit;
  454.     }
  455. }
  456.  
  457.  
  458.  
  459. /********************************************************************************************/
  460. /*     implementation of the functions provided by pro Fit and listed in proFit_interface.h
  461.      All these functions use the record runTimeParamRec  
  462.  
  463.     IMPORTANT: 
  464.     
  465.     DON'T CHANGE THE TYPES OF THE FUNCTION PARAMETERS, BECAUSE MANY ROUTINES SET DIRECTLY 
  466.     POINTERS TO THIS PARAMETERS IN THE PARAMETER BLOCK USED BY pro Fit.
  467.     
  468.     pro Fit EXPECTS THESE POINTERS TO POINT TO PARAMETERS OF A WELL-DEFINED TYPE.
  469.     
  470.     IF YOU CHANGE THE TYPE OF THESE PARAMETERS, YOUR CODE WILL NOT WORK ANYMORE WITH
  471.     PROFIT AND YOU WILL EXPERIENCE THE MOST HORRIBLE CRASHES!
  472.     
  473.     If you need to change some function-parameter types because of your particular
  474.     compiler, you still need to set the parameter block pointers to point to a parameter
  475.     of the type specified by pro Fit.
  476.     This is the type found in this interface file and in the pro Fit user manual.
  477.  
  478. ********************************************************************************************/
  479.  
  480.  
  481.  
  482. void GrMoveTo (double x, double y)
  483. {    RunTimeParamRec pb;
  484.     pb.what = 2;
  485.     pb.u.v2.x = x;
  486.     pb.u.v2.y = y;
  487.     CallRunTimeProc(&pb);
  488. }
  489.  
  490. void GrLineTo (double x, double y)
  491. {    RunTimeParamRec pb;
  492.     pb.what = 3;
  493.     pb.u.v2.x = x;
  494.     pb.u.v2.y = y;
  495.     CallRunTimeProc(&pb);
  496. }
  497.  
  498. void GrMove (double x, double y)
  499. {    RunTimeParamRec pb;
  500.     pb.what = 221;
  501.     pb.u.params.p[1]=&x;
  502.     pb.u.params.p[0]=&y;
  503.     CallRunTimeProc(&pb);
  504. }
  505.  
  506. void GrLine (double x, double y)
  507. {    RunTimeParamRec pb;
  508.     pb.what = 222;
  509.     pb.u.params.p[1]=&x;
  510.     pb.u.params.p[0]=&y;
  511.     CallRunTimeProc(&pb);
  512. }
  513.  
  514.  
  515.  
  516.  
  517.  
  518. void GetGraphCoordinates (double* const xmin, double* const xmax, double* const ymin, double* const ymax)
  519. {    RunTimeParamRec pb;
  520.     pb.what = 4;
  521.     pb.u.v4.xmin = xmin;
  522.     pb.u.v4.xmax = xmax;
  523.     pb.u.v4.ymin = ymin;
  524.     pb.u.v4.ymax = ymax;
  525.     CallRunTimeProc(&pb);
  526. }
  527.  
  528. void CreateNewGraph(double xmin, double xmax, double ymin, double ymax, short xScaling, short yScaling)
  529. {    RunTimeParamRec pb;
  530.     pb.what=5;
  531.     pb.u.v5.xmin = xmin;
  532.     pb.u.v5.xmax = xmax;
  533.     pb.u.v5.ymin = ymin;
  534.     pb.u.v5.ymax = ymax;
  535.     pb.u.v5.xScaling = xScaling;
  536.     pb.u.v5.yScaling = yScaling;
  537.     CallRunTimeProc(&pb);
  538. }
  539.  
  540. double PRandom (void)
  541.     {    RunTimeParamRec pb;
  542.         pb.what=11;
  543.         CallRunTimeProc(&pb);
  544.         return pb.u.v11.retval;
  545.     }
  546.  
  547. short TestStop(void)
  548. {    RunTimeParamRec pb;
  549.     pb.what=12;
  550.     CallRunTimeProc(&pb);
  551.     return pb.u.v12.retval;
  552. }
  553.  
  554. void StopExecution(void)
  555. {    RunTimeParamRec pb;
  556.     pb.what=40;
  557.     CallRunTimeProc(&pb);
  558. }
  559.  
  560. short GetAndSetStatus(short newStatus, Str255 s)
  561. {    RunTimeParamRec pb;
  562.     short retval;
  563.     pb.what=199;
  564.     pb.u.params.p[0]=&s[0];
  565.     pb.u.params.p[1]=&newStatus;
  566.     pb.u.params.p[2]=&retval;
  567.     CallRunTimeProc(&pb);
  568.     return retval;
  569. }
  570.  
  571. void Write(const Str255 s)
  572. {    RunTimeParamRec pb;
  573.     pb.what=13;
  574.     pb.u.v13.theMessage=s;
  575.     CallRunTimeProc(&pb);
  576. }
  577.  
  578. void Writeln(const Str255 s)
  579. {    RunTimeParamRec pb;
  580.     pb.what=14;
  581.     pb.u.v13.theMessage=s;
  582.     CallRunTimeProc(&pb);
  583. }
  584.  
  585. void WriteText(long length, unsigned char * theText)
  586. {    RunTimeParamRec pb;
  587.     pb.what=188;
  588.     pb.u.params.p[1]=&length;
  589.     pb.u.params.p[0]=theText;
  590.     CallRunTimeProc(&pb);
  591. }
  592.  
  593. void WriteInt(long i)
  594. {
  595.     Str255 s;
  596.     
  597.     NumToString(i, s);
  598.     Write(s);
  599. }
  600.  
  601. void WriteNumber(double d)
  602. {    RunTimeParamRec pb;
  603.     pb.what=15;
  604.     pb.u.v15.d1=d;
  605.     CallRunTimeProc(&pb);
  606. }
  607.  
  608. void NumberToStr255(double x, Str255 s, short format, short digits)
  609. {    RunTimeParamRec pb;
  610.     pb.what=197;
  611.     pb.u.params.p[0]=&digits;
  612.     pb.u.params.p[1]=&format;
  613.     pb.u.params.p[2]=&s[0];
  614.     pb.u.params.p[3]=&x;
  615.     CallRunTimeProc(&pb);
  616. }
  617.  
  618. short Str255ToNumber(Str255 s, double* const x)
  619. {    RunTimeParamRec pb;
  620.     short    retval;
  621.     pb.what=198;
  622.     pb.u.params.p[0]=x;
  623.     pb.u.params.p[1]=&s[0];
  624.     pb.u.params.p[2]=&retval;
  625.     CallRunTimeProc(&pb);
  626.     return retval;
  627. }
  628.  
  629. short AlertBox(const Str255 message)
  630. {    RunTimeParamRec pb;
  631.     pb.what=16;
  632.     pb.u.v16.theMessage=message;
  633.     CallRunTimeProc(&pb);
  634.     return pb.u.v16.retval;
  635. }
  636.  
  637. short InputBox(short numItems, InputRec* r)
  638. {    RunTimeParamRec pb;
  639.     pb.what=17;
  640.     pb.u.v17.nrArgs=numItems;
  641.     pb.u.v17.r=r;
  642.     CallRunTimeProc(&pb);
  643.     return pb.u.v17.retval;
  644. }
  645.  
  646. short AskBox(short* const answer,const Str255 question)
  647. {    RunTimeParamRec pb;
  648.     pb.what=18;
  649.     pb.u.v18.question = question;
  650.     pb.u.v18.answer = answer;
  651.     CallRunTimeProc(&pb);
  652.     return pb.u.v18.retval;
  653. }
  654.  
  655. void SetColName(long col,const Str255 name)
  656. {    RunTimeParamRec pb;
  657.     pb.what=19;
  658.     pb.u.v19.column=col;
  659.     pb.u.v19.name=name;
  660.     CallRunTimeProc(&pb);
  661. }
  662.  
  663. long XColumn (void)
  664.     {    RunTimeParamRec pb;
  665.         pb.what=20;
  666.         CallRunTimeProc(&pb);
  667.         return pb.u.v11.retval;
  668.     }
  669.  
  670. long YColumn (void)
  671.     {    RunTimeParamRec pb;
  672.         pb.what=21;
  673.         CallRunTimeProc(&pb);
  674.         return pb.u.v11.retval;
  675.     }
  676.  
  677.  
  678. long XErrColumn (void)
  679.     {    RunTimeParamRec pb;
  680.         pb.what=22;
  681.         CallRunTimeProc(&pb);
  682.         return pb.u.v11.retval;
  683.     }
  684.  
  685.  
  686. long YErrColumn (void)
  687.     {    RunTimeParamRec pb;
  688.         pb.what=23;
  689.         CallRunTimeProc(&pb);
  690.         return pb.u.v11.retval;
  691.     }
  692.  
  693. void SetDefaultCols(long xColumn, long yColumn, long xErrColumn, long yErrColumn)
  694. {
  695.     RunTimeParamRec pb;
  696.     pb.what=180;
  697.     pb.u.params.p[3]=&xColumn;
  698.     pb.u.params.p[2]=&yColumn;
  699.     pb.u.params.p[1]=&xErrColumn;
  700.     pb.u.params.p[0]=&yErrColumn;
  701.     CallRunTimeProc(&pb);
  702. }
  703.  
  704. Rect GetSelection(void)
  705. {    RunTimeParamRec pb;
  706.     pb.what=24;
  707.     CallRunTimeProc(&pb);
  708.     return pb.u.v24.selectionRect;
  709. }
  710.  
  711.  
  712. long NrRows (void)
  713.     {    RunTimeParamRec pb;
  714.         pb.what=34;
  715.         CallRunTimeProc(&pb);
  716.         return pb.u.v11.retval;
  717.     }
  718.  
  719. long NrCols (void)
  720.     {    RunTimeParamRec pb;
  721.         pb.what=35;
  722.         CallRunTimeProc(&pb);
  723.         return pb.u.v11.retval;
  724.     }
  725.  
  726.  
  727.  
  728. double    GetData(long row, long col)
  729. {    RunTimeParamRec pb;
  730.     pb.what=25;
  731.     pb.u.v25.column=col;
  732.     pb.u.v25.row=row;
  733.     CallRunTimeProc(&pb);
  734.     return pb.u.v25.cellValue;
  735. }
  736.     
  737. void SetData(long row, long col,double value)
  738. {    RunTimeParamRec pb;
  739.     pb.what=26;
  740.     pb.u.v25.column=col;
  741.     pb.u.v25.row=row;
  742.     pb.u.v25.cellValue=value;
  743.     CallRunTimeProc(&pb);
  744. }
  745.  
  746. void ClearData(long row, long col)
  747. {    RunTimeParamRec pb;
  748.     pb.what=27;
  749.     pb.u.v27.column=col;
  750.     pb.u.v27.row=row;
  751.     CallRunTimeProc(&pb);
  752. }
  753.  
  754.  
  755. short TestData(long row, long col)
  756. {    RunTimeParamRec pb;
  757.     pb.what=28;
  758.     pb.u.v28.column=col;
  759.     pb.u.v28.row=row;
  760.     CallRunTimeProc(&pb);
  761.     return pb.u.v28.retval;
  762. }
  763.  
  764. short NumberInvalid(double aNum)
  765. {    RunTimeParamRec pb;
  766.      pb.what=29;
  767.     pb.u.v29.aNum=aNum;
  768.     CallRunTimeProc(&pb);
  769.     return pb.u.v29.retval;
  770. }
  771.  
  772. void SetParamLimits(short paramNum, double low, double high)
  773. {    RunTimeParamRec pb;
  774.     pb.what=30;
  775.     pb.u.v30.alow=low;
  776.     pb.u.v30.ahigh=high;
  777.     pb.u.v30.paramIndex=paramNum;
  778.     CallRunTimeProc(&pb);
  779. }
  780.  
  781. void SetParamDefaultValue(short paramNum, double value)
  782. {    RunTimeParamRec pb;
  783.     pb.what=31;
  784.     pb.u.v31.aval=value;
  785.     pb.u.v31.paramIndex=paramNum;
  786.     CallRunTimeProc(&pb);
  787. }
  788.  
  789. void SetParamName(short paramNum, const Str255 name)
  790. {    RunTimeParamRec pb;
  791.     pb.what=32;
  792.     pb.u.v32.aname=name;
  793.     pb.u.v32.paramIndex=paramNum;
  794.     CallRunTimeProc(&pb);
  795. }
  796.  
  797. void SetParamDefaults(short paramNum, double value, short mode, const Str255 name, double low,
  798.         double high)
  799. {    RunTimeParamRec pb;
  800.     pb.what=33;
  801.     pb.u.v33.alow=low;
  802.     pb.u.v33.ahigh=high;
  803.     pb.u.v33.aname=name;
  804.     pb.u.v33.amode=mode;
  805.     pb.u.v33.aval=value;
  806.     pb.u.v33.paramIndex=paramNum;
  807.     CallRunTimeProc(&pb);
  808. }
  809.  
  810. double CallFunction(const Str255 name,double xvalue)
  811. {    RunTimeParamRec pb;
  812.     pb.what=100;
  813.     pb.u.v100.funcName=name;
  814.     pb.u.v100.xval=xvalue;
  815.     CallRunTimeProc(&pb);
  816.     return pb.u.v100.retval;
  817. }
  818.  
  819. short GetNumFunctionParams(const Str255 functionName)
  820. {    RunTimeParamRec pb;
  821.     pb.what=105;
  822.     pb.u.v105.funcName=functionName;
  823.     CallRunTimeProc(&pb);
  824.     return pb.u.v105.retval;
  825. }
  826.  
  827. short GetFunctionParamMode(const Str255 functionName,short paramNum)
  828. {    RunTimeParamRec pb;
  829.     pb.what=104;
  830.     pb.u.v101.funcName=functionName;
  831.     pb.u.v101.paramIndex=paramNum;
  832.     CallRunTimeProc(&pb);
  833.     return pb.u.v101.retval;
  834. }
  835.  
  836. void GetFunctionParamName(const Str255 functionName,short paramIndex, Str255 paramName)
  837. {
  838.     RunTimeParamRec pb;
  839.     pb.what=106;
  840.     pb.u.params.p[0]=¶mName[0];
  841.     pb.u.params.p[1]=¶mIndex;
  842.     pb.u.params.p[2]=(void*)&functionName[0];
  843.     CallRunTimeProc(&pb);
  844. }
  845.  
  846. double GetFunctionParam(const Str255 functionName,short paramNum)
  847. {    RunTimeParamRec pb;
  848.     pb.what=101;
  849.     pb.u.v101.funcName=functionName;
  850.     pb.u.v101.paramIndex=paramNum;
  851.     CallRunTimeProc(&pb);
  852.     return pb.u.v101.retval;
  853. }
  854.  
  855. void SetFunctionParam(const Str255 functionName,short paramNum,double value)
  856. {    RunTimeParamRec pb;
  857.     pb.what=102;
  858.     pb.u.v102.funcName=functionName;
  859.     pb.u.v102.paramIndex=paramNum;
  860.      pb.u.v102.pVal=value;
  861.     CallRunTimeProc(&pb);
  862. }
  863.  
  864. void CallProgram(const Str255 programName)
  865. {    RunTimeParamRec pb;
  866.     pb.what=103;
  867.     pb.u.v103.progName=programName;
  868.     CallRunTimeProc(&pb);
  869. }
  870.  
  871. double Integral(const Str255 functionName, double xmin, double xmax, short numIters)
  872. {    RunTimeParamRec pb;
  873.     pb.what=110;
  874.     pb.u.v110.funcName=functionName;
  875.     pb.u.v110.min=xmin;
  876.     pb.u.v110.max=xmax;
  877.     pb.u.v110.numIterations=numIters;
  878.     CallRunTimeProc(&pb);
  879.     return pb.u.v110.retval;
  880. }
  881.  
  882. double Maximum(const Str255 functionName, double xmin, double xmax)
  883. {    RunTimeParamRec pb;
  884.     pb.what=111;
  885.     pb.u.v111.funcName=functionName;
  886.     pb.u.v111.min=xmin;
  887.     pb.u.v111.max=xmax;
  888.     CallRunTimeProc(&pb);
  889.     return pb.u.v111.retval;
  890. }
  891.  
  892. double Minimum(const Str255 functionName, double xmin, double xmax)
  893. {    RunTimeParamRec pb;
  894.     pb.what=112;
  895.     pb.u.v111.funcName=functionName;
  896.     pb.u.v111.min=xmin;
  897.     pb.u.v111.max=xmax;
  898.     CallRunTimeProc(&pb);
  899.     return pb.u.v111.retval;
  900. }
  901.  
  902. double Root(const Str255 functionName, double xmin, double xmax)
  903. {    RunTimeParamRec pb;
  904.     pb.what=113;
  905.     pb.u.v111.funcName=functionName;
  906.     pb.u.v111.min=xmin;
  907.     pb.u.v111.max=xmax;
  908.     CallRunTimeProc(&pb);
  909.     return pb.u.v111.retval;
  910. }
  911.  
  912. double Derivative(const Str255 functionName, double x, double scale)
  913. {    RunTimeParamRec pb;
  914.     pb.what=114;
  915.     pb.u.v111.funcName=functionName;
  916.     pb.u.v111.min=x;
  917.     pb.u.v111.max=scale;
  918.     CallRunTimeProc(&pb);
  919.     return pb.u.v111.retval;
  920. }
  921.  
  922. double ChiSquared(void)
  923. {    RunTimeParamRec pb;
  924.     pb.what=120;
  925.     CallRunTimeProc(&pb);
  926.     return pb.u.v11.retval;
  927. }
  928.  
  929. void Fit(const Str255 functionName, long xCol, long yCol, long errCol,
  930.     double errVal, Boolean selectionOnly)
  931. {    RunTimeParamRec pb;
  932.     pb.what=115;
  933.     pb.u.v115.funcName = &functionName[0];
  934.     pb.u.v115.xCol = xCol; pb.u.v115.yCol = yCol;
  935.     pb.u.v115.errCol = errCol, pb.u.v115.errVal = errVal;
  936.     pb.u.v115.selectionOnly = selectionOnly;
  937.     CallRunTimeProc(&pb);
  938. }
  939.  
  940. short NumFitParams(void)
  941. {    RunTimeParamRec pb;
  942.     pb.what=121;
  943.     CallRunTimeProc(&pb);
  944.     return pb.u.v121.numFitParams;
  945. }
  946.  
  947. double FittedParams(short paramNum)
  948. {    RunTimeParamRec pb;
  949.     pb.what=122;
  950.     pb.u.v122.paramIndex=paramNum;
  951.     CallRunTimeProc(&pb);
  952.     return pb.u.v122.retval;
  953. }
  954.  
  955. double ParamSD(short paramNum)
  956. {    RunTimeParamRec pb;
  957.     pb.what=123;
  958.     pb.u.v122.paramIndex=paramNum;
  959.     CallRunTimeProc(&pb);
  960.     return pb.u.v122.retval;
  961. }
  962.  
  963. double CovarMatrix(short paramNum1, short paramNum2)
  964. {    RunTimeParamRec pb;
  965.     pb.what=124;
  966.     pb.u.v124.paramIndex1=paramNum1;
  967.     pb.u.v124.paramIndex2=paramNum2;
  968.     CallRunTimeProc(&pb);
  969.     return pb.u.v124.retval;
  970. }
  971.  
  972.  
  973.  
  974. double Erf(double x)
  975. {    double retVal;
  976.     RunTimeParamRec pb;
  977.     pb.what=41;
  978.     pb.u.params.p[0]=&x;
  979.     pb.u.params.p[1]=&retVal;
  980.     CallRunTimeProc(&pb);
  981.     return retVal;
  982. }
  983.  
  984. double Erfc(double x)
  985. {    double retVal;
  986.     RunTimeParamRec pb;
  987.     pb.what=42;
  988.     pb.u.params.p[0]=&x;
  989.     pb.u.params.p[1]=&retVal;
  990.     CallRunTimeProc(&pb);
  991.     return retVal;
  992. }
  993.  
  994. double MarkedX(short i)
  995. {    double retVal;
  996.     RunTimeParamRec pb;
  997.     pb.what=43;
  998.     pb.u.params.p[0]=&i;
  999.     pb.u.params.p[1]=&retVal;
  1000.     CallRunTimeProc(&pb);
  1001.     return retVal;
  1002. }
  1003.  
  1004. double MarkedY(short i)
  1005. {    double retVal;
  1006.     RunTimeParamRec pb;
  1007.     pb.what=44;
  1008.     pb.u.params.p[0]=&i;
  1009.     pb.u.params.p[1]=&retVal;
  1010.     CallRunTimeProc(&pb);
  1011.     return retVal;
  1012. }
  1013.  
  1014. void MarkedCoord(short i, double* x, double* y)
  1015. {    RunTimeParamRec pb;
  1016.     pb.what=45;
  1017.     pb.u.params.p[2]=&i;
  1018.     pb.u.params.p[1]=x;
  1019.     pb.u.params.p[0]=y;
  1020.     CallRunTimeProc(&pb);
  1021. }
  1022.  
  1023. void SetFitDefaults(    short     algorithm,             
  1024.                         short     yErrDistribution,     
  1025.                         short     xErrDistribution,    
  1026.                         long      xErrColumn,         
  1027.                         double  xErrValue,            
  1028.                         double    stopTime)            
  1029. {    RunTimeParamRec pb;
  1030.     pb.what=116;
  1031.     pb.u.params.p[5]=&algorithm;
  1032.     pb.u.params.p[4]=&yErrDistribution;
  1033.     pb.u.params.p[3]=&xErrDistribution;
  1034.     pb.u.params.p[2]=&xErrColumn;
  1035.     pb.u.params.p[1]=&xErrValue;
  1036.     pb.u.params.p[0]=&stopTime;
  1037.     CallRunTimeProc(&pb);
  1038. }
  1039.  
  1040. Boolean Maximize(    const Str255    theFunction,            
  1041.                     double    precision,                
  1042.                     Boolean    varyX,            
  1043.                     double*    x,            
  1044.                     double*    y)
  1045. {    Boolean retVal;
  1046.     RunTimeParamRec pb;
  1047.     pb.what=117;
  1048.     pb.u.params.p[5]=&retVal;
  1049.     pb.u.params.p[4]=(void*)theFunction;
  1050.     pb.u.params.p[3]=&precision;
  1051.     pb.u.params.p[2]=&varyX;
  1052.     pb.u.params.p[1]=x;
  1053.     pb.u.params.p[0]=y;
  1054.     CallRunTimeProc(&pb);
  1055.     return retVal;
  1056. }    
  1057.  
  1058. Boolean Minimize(const Str255    theFunction,double precision,Boolean varyX, double*    x,double* y)
  1059. {    Boolean retVal;
  1060.     RunTimeParamRec pb;
  1061.     pb.what=118;
  1062.     pb.u.params.p[5]=&retVal;
  1063.     pb.u.params.p[4]=(void*)theFunction;
  1064.     pb.u.params.p[3]=&precision;
  1065.     pb.u.params.p[2]=&varyX;
  1066.     pb.u.params.p[1]=x;
  1067.     pb.u.params.p[0]=y;
  1068.     CallRunTimeProc(&pb);
  1069.     return retVal;
  1070. }    
  1071.  
  1072. void SetErrorAnalysis(    double confidence,        
  1073.                         long iterations)        
  1074. {    RunTimeParamRec pb;
  1075.     pb.what=125;
  1076.     pb.u.params.p[1]=&confidence;
  1077.     pb.u.params.p[0]=&iterations;
  1078.     CallRunTimeProc(&pb);
  1079. }    
  1080.  
  1081. void ConfidenceInterval(short i,double* const min, double* const max)
  1082. {    RunTimeParamRec pb;
  1083.     pb.what=126;
  1084.     pb.u.params.p[2]=&i;
  1085.     pb.u.params.p[1]=min;
  1086.     pb.u.params.p[0]=max;
  1087.     CallRunTimeProc(&pb);
  1088. }    
  1089.  
  1090.  
  1091. Boolean CalcStat(    long column,                 
  1092.                     Boolean selRowsOnly,     
  1093.                     Boolean withBasics,     
  1094.                     Boolean withSkewAndCurt, 
  1095.                     Boolean withMedian)    
  1096. {    Boolean retVal;
  1097.     RunTimeParamRec pb;
  1098.     pb.what=130;
  1099.     pb.u.params.p[5]=&retVal;
  1100.     pb.u.params.p[4]=&column;
  1101.     pb.u.params.p[3]=&selRowsOnly;
  1102.     pb.u.params.p[2]=&withBasics;
  1103.     pb.u.params.p[1]=&withSkewAndCurt;
  1104.     pb.u.params.p[0]=&withMedian;
  1105.     CallRunTimeProc(&pb);
  1106.     return retVal;
  1107. }    
  1108.  
  1109. void GetBasics(    long*     count,         
  1110.                 double* sum,         
  1111.                 double* mean,         
  1112.                 double* variance,    
  1113.                 double* stdDev,        
  1114.                 double* meanAbsDev)
  1115. {    RunTimeParamRec pb;
  1116.     pb.what=131;
  1117.     pb.u.params.p[5]=count;
  1118.     pb.u.params.p[4]=sum;
  1119.     pb.u.params.p[3]=mean;
  1120.     pb.u.params.p[2]=variance;
  1121.     pb.u.params.p[1]=stdDev;
  1122.     pb.u.params.p[0]=meanAbsDev;
  1123.     CallRunTimeProc(&pb);
  1124. }    
  1125.  
  1126. void GetSkewAndKurt(    long*     count,         
  1127.                         double* mean,     
  1128.                         double* variance,    
  1129.                         double* skewness,     
  1130.                         double* kurtosis)
  1131. {    RunTimeParamRec pb;
  1132.     pb.what=132;
  1133.     pb.u.params.p[4]=count;
  1134.     pb.u.params.p[3]=mean;
  1135.     pb.u.params.p[2]=variance;
  1136.     pb.u.params.p[1]=skewness;
  1137.     pb.u.params.p[0]=kurtosis;
  1138.     CallRunTimeProc(&pb);
  1139. }    
  1140.  
  1141.  
  1142. void    GetMedian(    long*     count,     
  1143.                     double* mean,     
  1144.                     double* median,    
  1145.                     double* minimum,     
  1146.                     double* maximum)
  1147. {    RunTimeParamRec pb;
  1148.     pb.what=133;
  1149.     pb.u.params.p[4]=count;
  1150.     pb.u.params.p[3]=mean;
  1151.     pb.u.params.p[2]=median;
  1152.     pb.u.params.p[1]=minimum;
  1153.     pb.u.params.p[0]=maximum;
  1154.     CallRunTimeProc(&pb);
  1155. }    
  1156.  
  1157.  
  1158. void DoMenu(const Str255 s)
  1159. {    RunTimeParamRec pb;
  1160.     pb.what=135;
  1161.     pb.u.params.p[0]=(void*)s;
  1162.     CallRunTimeProc(&pb);
  1163. }    
  1164.  
  1165.  
  1166. long GetFrontWindow(void)
  1167. {    long retVal;
  1168.     RunTimeParamRec pb;
  1169.     pb.what=150;
  1170.     pb.u.params.p[0]=&retVal;
  1171.     CallRunTimeProc(&pb);
  1172.     return retVal;
  1173. }    
  1174.     
  1175. void DoNewWindow(long    windowType)
  1176. {    RunTimeParamRec pb;
  1177.     pb.what=151;
  1178.     pb.u.params.p[0]=&windowType;
  1179.     CallRunTimeProc(&pb);
  1180. }    
  1181.  
  1182.  
  1183. void SetCurrentWindow(long    windowID)
  1184. {    RunTimeParamRec pb;
  1185.     pb.what=152;
  1186.     pb.u.params.p[0]=&windowID;
  1187.     CallRunTimeProc(&pb);
  1188. }    
  1189.  
  1190. long GetCurrentWindow(long windowType)
  1191. {    long retVal;
  1192.     RunTimeParamRec pb;
  1193.     pb.what=153;
  1194.     pb.u.params.p[1]=&retVal;
  1195.     pb.u.params.p[0]=&windowType;
  1196.     CallRunTimeProc(&pb);
  1197.     return retVal;
  1198. }    
  1199.  
  1200. void DoCloseWindow(long windowID, Boolean saveIt)
  1201. {    RunTimeParamRec pb;
  1202.     pb.what=154;
  1203.     pb.u.params.p[1]=&windowID;
  1204.     pb.u.params.p[0]=&saveIt;
  1205.     CallRunTimeProc(&pb);
  1206. }    
  1207.  
  1208. long FrontmostWindow(long windowType)
  1209. {    long retVal;
  1210.     RunTimeParamRec pb;
  1211.     pb.what=155;
  1212.     pb.u.params.p[1]=&retVal;
  1213.     pb.u.params.p[0]=&windowType;
  1214.     CallRunTimeProc(&pb);
  1215.     return retVal;
  1216. }    
  1217.  
  1218. void SaveWindow(long windowID)
  1219. {    RunTimeParamRec pb;
  1220.     pb.what=156;
  1221.     pb.u.params.p[0]=&windowID;
  1222.     CallRunTimeProc(&pb);
  1223. }    
  1224.  
  1225. void SaveWindowAs(long windowID, const Str255 fileName)
  1226. {    RunTimeParamRec pb;
  1227.     pb.what=157;
  1228.     pb.u.params.p[1]=&windowID;
  1229.     pb.u.params.p[0]=(void*)fileName;
  1230.     CallRunTimeProc(&pb);
  1231. }    
  1232.  
  1233. long GetWindowID(const Str255 windowName)
  1234. {    long retVal;
  1235.     RunTimeParamRec pb;
  1236.     pb.what=158;
  1237.     pb.u.params.p[1]=&retVal;
  1238.     pb.u.params.p[0]=(void*)windowName;
  1239.     CallRunTimeProc(&pb);
  1240.     return retVal;
  1241. }    
  1242.  
  1243.  
  1244. long GetWindowType(long windowID)
  1245. {    long retVal;
  1246.     RunTimeParamRec pb;
  1247.     pb.what=159;
  1248.     pb.u.params.p[1]=&retVal;
  1249.     pb.u.params.p[0]=&windowID;
  1250.     CallRunTimeProc(&pb);
  1251.     return retVal;
  1252. }        
  1253.  
  1254. long NextWindow(long windowID)
  1255. {    long retVal;
  1256.     RunTimeParamRec pb;
  1257.     pb.what=160;
  1258.     pb.u.params.p[1]=&retVal;
  1259.     pb.u.params.p[0]=&windowID;
  1260.     CallRunTimeProc(&pb);
  1261.     return retVal;
  1262. }        
  1263.  
  1264. void OpenFile(const Str255 fileName)
  1265. {    RunTimeParamRec pb;
  1266.     pb.what=161;
  1267.     pb.u.params.p[0]=(void*)fileName;
  1268.     CallRunTimeProc(&pb);
  1269. }    
  1270.  
  1271. void OpenData(const Str255 fileName)
  1272. {    RunTimeParamRec pb;
  1273.     pb.what=162;
  1274.     pb.u.params.p[0]=(void*)fileName;
  1275.     CallRunTimeProc(&pb);
  1276. }    
  1277.  
  1278. void OpenText(const Str255 fileName)
  1279. {    RunTimeParamRec pb;
  1280.     pb.what=163;
  1281.     pb.u.params.p[0]=(void*)fileName;
  1282.     CallRunTimeProc(&pb);
  1283. }    
  1284.  
  1285. void SetTextFileFormat(const Str255 colDelimiter,
  1286.                         const Str255 endOfLine,
  1287.                         Boolean withColTitles,
  1288.                         Boolean copyInfoText,
  1289.                         long nrHeaderLines,
  1290.                         long inputORoutput)
  1291. {    RunTimeParamRec pb;
  1292.     long wT=withColTitles;
  1293.     long cI=copyInfoText;
  1294.     pb.what=189;
  1295.     pb.u.params.p[5]=(void*)colDelimiter;
  1296.     pb.u.params.p[4]=(void*)endOfLine;
  1297.     pb.u.params.p[3]=&wT;
  1298.     pb.u.params.p[2]=&cI;
  1299.     pb.u.params.p[1]=&nrHeaderLines;
  1300.     pb.u.params.p[0]=&inputORoutput;
  1301.     CallRunTimeProc(&pb);
  1302. }    
  1303.  
  1304. void SaveDataAsText(long windowID, const Str255 fileName)            
  1305. {    RunTimeParamRec pb;
  1306.     pb.what=164;
  1307.     pb.u.params.p[1]=&windowID;
  1308.     pb.u.params.p[0]=(void*)fileName;
  1309.     CallRunTimeProc(&pb);
  1310. }    
  1311.  
  1312. void SaveDrawingAs(long windowID, const Str255 fileName,long format)
  1313. {    RunTimeParamRec pb;
  1314.     pb.what=165;
  1315.     pb.u.params.p[2]=&windowID;
  1316.     pb.u.params.p[1]=(void*)fileName;
  1317.     pb.u.params.p[0]=&format;
  1318.     CallRunTimeProc(&pb);
  1319. }    
  1320.  
  1321. void SetWindowTitle(long windowID, const Str255 name)
  1322. {    RunTimeParamRec pb;
  1323.     pb.what=166;
  1324.     pb.u.params.p[1]=&windowID;
  1325.     pb.u.params.p[0]=(void*)name;
  1326.     CallRunTimeProc(&pb);
  1327. }    
  1328.  
  1329. void GetWindowTitle(long windowID, Str255 name)
  1330. {    RunTimeParamRec pb;
  1331.     pb.what=149;
  1332.     pb.u.params.p[1]=&windowID;
  1333.     pb.u.params.p[0]=(void*)name;
  1334.     CallRunTimeProc(&pb);
  1335. }
  1336.  
  1337.  
  1338. void PlaceWindow(long windowID, Rect windowRect)
  1339. {    RunTimeParamRec pb;
  1340.     pb.what=167;
  1341.     pb.u.params.p[4]=&windowID;
  1342.     pb.u.params.p[3]=&windowRect.left;
  1343.     pb.u.params.p[2]=&windowRect.top;
  1344.     pb.u.params.p[1]=&windowRect.right;
  1345.     pb.u.params.p[0]=&windowRect.bottom;
  1346.     CallRunTimeProc(&pb);
  1347. }    
  1348.  
  1349.  
  1350. void BringWindowToFront(long windowID)
  1351. {    RunTimeParamRec pb;
  1352.     pb.what=168;
  1353.     pb.u.params.p[0]=&windowID;
  1354.     CallRunTimeProc(&pb);
  1355. }    
  1356.  
  1357. void Compile(long windowID)
  1358. {    RunTimeParamRec pb;
  1359.     pb.what=169;
  1360.     pb.u.params.p[0]=&windowID;
  1361.     CallRunTimeProc(&pb);
  1362. }        
  1363.  
  1364. void SetDataSize(long numberOfRows, long numberOfColumns)
  1365. {    RunTimeParamRec pb;
  1366.     pb.what=170;
  1367.     pb.u.params.p[1]=&numberOfRows;
  1368.     pb.u.params.p[0]=&numberOfColumns;
  1369.     CallRunTimeProc(&pb);
  1370. }    
  1371.  
  1372. long GetColType(long columnNumber)
  1373. {    long retVal;
  1374.     RunTimeParamRec pb;
  1375.     pb.what=171;
  1376.     pb.u.params.p[1]=&retVal;
  1377.     pb.u.params.p[0]=&columnNumber;
  1378.     CallRunTimeProc(&pb);
  1379.     return retVal;
  1380. }    
  1381.  
  1382. void SetColType(long columnNumber, long theType)
  1383. {    RunTimeParamRec pb;
  1384.     pb.what=172;
  1385.     pb.u.params.p[1]=&columnNumber;
  1386.     pb.u.params.p[0]=&theType;
  1387.     CallRunTimeProc(&pb);
  1388. }    
  1389.  
  1390.  
  1391. void SetColWidth(long columnNumber, short width)
  1392. {    RunTimeParamRec pb;
  1393.     pb.what=184;
  1394.     pb.u.params.p[1]=&columnNumber;
  1395.     pb.u.params.p[0]=&width;
  1396.     CallRunTimeProc(&pb);
  1397. }    
  1398.  
  1399. Boolean ColEmpty(long columnNumber)
  1400. {    Boolean retVal;
  1401.     RunTimeParamRec pb;
  1402.     pb.what=185;
  1403.     pb.u.params.p[1]=&retVal;
  1404.     pb.u.params.p[0]=&columnNumber;
  1405.     CallRunTimeProc(&pb);
  1406.     return retVal;
  1407. }        
  1408.  
  1409. void SetBoxTitle(const Str255 title)
  1410. {    RunTimeParamRec pb;
  1411.     pb.what=186;
  1412.     pb.u.params.p[0]=(void*)&title[0];
  1413.     CallRunTimeProc(&pb);
  1414. }    
  1415.     
  1416. void SetWindowInfo(long windowID, long length, Ptr info)
  1417. {    RunTimeParamRec pb;
  1418.     pb.what=187;
  1419.     pb.u.params.p[2]=&windowID;
  1420.     pb.u.params.p[1]=&length;
  1421.     pb.u.params.p[0]=info;
  1422.     CallRunTimeProc(&pb);
  1423. }    
  1424.  
  1425. void SelectCells(long left, long top, long right, long bottom)
  1426. {    RunTimeParamRec pb;
  1427.     pb.what=173;
  1428.     pb.u.params.p[3]=&left;
  1429.     pb.u.params.p[2]=⊤
  1430.     pb.u.params.p[1]=&right;
  1431.     pb.u.params.p[0]=⊥
  1432.     CallRunTimeProc(&pb);
  1433. }    
  1434.  
  1435.  
  1436. void SelectRows(long top, long bottom, Boolean doSelect)
  1437. {    RunTimeParamRec pb;
  1438.     pb.what=174;
  1439.     pb.u.params.p[2]=⊤
  1440.     pb.u.params.p[1]=⊥
  1441.     pb.u.params.p[0]=&doSelect;
  1442.     CallRunTimeProc(&pb);
  1443. }    
  1444.  
  1445.  
  1446. Boolean RowSelected(long rowNumber)
  1447. {    Boolean retVal;
  1448.     RunTimeParamRec pb;
  1449.     pb.what=175;
  1450.     pb.u.params.p[1]=&retVal;
  1451.     pb.u.params.p[0]=&rowNumber;
  1452.     CallRunTimeProc(&pb);
  1453.     return retVal;
  1454. }    
  1455.  
  1456. Boolean CellSelected(long row, long column)
  1457. {    Boolean retVal;
  1458.     RunTimeParamRec pb;
  1459.     pb.what=176;
  1460.     pb.u.params.p[2]=&retVal;
  1461.     pb.u.params.p[1]=&row;
  1462.     pb.u.params.p[0]=&column;
  1463.     CallRunTimeProc(&pb);
  1464.     return retVal;
  1465. }    
  1466.  
  1467.     
  1468. void SetCell(long row,long column, const Str255 s)
  1469. {    RunTimeParamRec pb;
  1470.     pb.what=177;
  1471.     pb.u.params.p[2]=&row;
  1472.     pb.u.params.p[1]=&column;
  1473.     pb.u.params.p[0]=(void*)s;
  1474.     CallRunTimeProc(&pb);
  1475. }        
  1476.  
  1477. void GetCell(Str255 s, long row,long column)
  1478. {    RunTimeParamRec pb;
  1479.     pb.what=178;
  1480.     pb.u.params.p[2]=&row;
  1481.     pb.u.params.p[1]=&column;
  1482.     pb.u.params.p[0]=s;
  1483.     CallRunTimeProc(&pb);
  1484. }
  1485.  
  1486. void GetColName(Str255 name, long column)
  1487. {    RunTimeParamRec pb;
  1488.     pb.what=179;
  1489.     pb.u.params.p[0]=&name[0];
  1490.     pb.u.params.p[1]=&column;
  1491.     CallRunTimeProc(&pb);
  1492. }
  1493.  
  1494. void GetColHandle(long col, Handle* const colH, long* const length, 
  1495.             long* const colType, Boolean forWriting)
  1496. {    RunTimeParamRec pb;
  1497.     pb.what=181;
  1498.     pb.u.params.p[0]=&col;
  1499.     pb.u.params.p[1]=colH;
  1500.     pb.u.params.p[2]=length;
  1501.     pb.u.params.p[3]=colType;
  1502.     pb.u.params.p[4]=&forWriting;
  1503.     CallRunTimeProc(&pb);
  1504. }
  1505.  
  1506. void SetColHandle(long col, Handle colH)
  1507. {
  1508.     RunTimeParamRec pb;
  1509.     pb.what=182;
  1510.     pb.u.params.p[0]=&col;
  1511.     pb.u.params.p[1]=&colH;
  1512.     CallRunTimeProc(&pb);
  1513. }
  1514.  
  1515. void GetDefaultData(    DoubleArrayHandle* const xColH,     
  1516.                             DoubleArrayHandle* const yColH,
  1517.                             DoubleArrayHandle* const xErrColH, 
  1518.                             DoubleArrayHandle* const yErrColH,
  1519.                             LongArrayHandle*   const indecesH,
  1520.                             long* arraySize,
  1521.                             Boolean selectedRowsOnly,
  1522.                             DataInfo* const info)
  1523. {
  1524.     RunTimeParamRec pb;
  1525.     pb.what=183;
  1526.     pb.u.params.p[7]=xColH;
  1527.     pb.u.params.p[6]=yColH;
  1528.     pb.u.params.p[5]=xErrColH;
  1529.     pb.u.params.p[4]=yErrColH;
  1530.     pb.u.params.p[3]=indecesH;
  1531.     pb.u.params.p[2]=arraySize;
  1532.     pb.u.params.p[1]=&selectedRowsOnly;
  1533.     pb.u.params.p[0]=info;
  1534.     CallRunTimeProc(&pb);
  1535. }
  1536.  
  1537. void SetWaitTitle(const Str255 s1)
  1538. {    RunTimeParamRec pb;
  1539.     pb.what=46;
  1540.     pb.u.params.p[0]=(void*)s1;
  1541.     CallRunTimeProc(&pb);
  1542. }        
  1543.  
  1544. void SetWaitText(const Str255 s1, const Str255 s2, const Str255 s3, const Str255 s4, const Str255 s5, const Str255 s6)
  1545. {    RunTimeParamRec pb;
  1546.     pb.what=47;
  1547.     pb.u.params.p[5]=(void*)s1;
  1548.     pb.u.params.p[4]=(void*)s2;
  1549.     pb.u.params.p[3]=(void*)s3;
  1550.     pb.u.params.p[2]=(void*)s4;
  1551.     pb.u.params.p[1]=(void*)s5;
  1552.     pb.u.params.p[0]=(void*)s6;
  1553.     CallRunTimeProc(&pb);
  1554. }        
  1555.  
  1556.  
  1557. long CreateTextFile(const Str255 fileName)
  1558. {    long retVal;
  1559.     RunTimeParamRec pb;
  1560.     pb.what=190;
  1561.     pb.u.params.p[1]=&retVal;
  1562.     pb.u.params.p[0]=(void*)fileName;
  1563.     CallRunTimeProc(&pb);
  1564.     return retVal;
  1565. }        
  1566.  
  1567. void CloseTextFile(long fileRefNumber)
  1568. {    RunTimeParamRec pb;
  1569.     pb.what=191;
  1570.     pb.u.params.p[0]=&fileRefNumber;
  1571.     CallRunTimeProc(&pb);
  1572. }        
  1573.         
  1574. void WriteToTextFile(long fileRefNumber)
  1575. {    RunTimeParamRec pb;
  1576.     pb.what=192;
  1577.     pb.u.params.p[0]=&fileRefNumber;
  1578.     CallRunTimeProc(&pb);
  1579. }        
  1580.  
  1581.  
  1582. void HandleEvent(EventRecord* const theEvent)
  1583. {    RunTimeParamRec pb;
  1584.     pb.what=193;
  1585.     pb.u.params.p[0]=theEvent;
  1586.     CallRunTimeProc(&pb);
  1587. }
  1588.  
  1589. Boolean CancelEvent(EventRecord* const theEvent)
  1590. {    RunTimeParamRec pb;
  1591.     Boolean            retval;
  1592.     pb.what=196;
  1593.     pb.u.params.p[0]=theEvent;
  1594.     pb.u.params.p[1]=&retval;
  1595.     CallRunTimeProc(&pb);
  1596.     return retval;
  1597. }
  1598.  
  1599. void DeactivateProFitWindows(void)
  1600. {    RunTimeParamRec pb;
  1601.     pb.what=194;
  1602.     CallRunTimeProc(&pb);
  1603. }        
  1604.  
  1605. void ActivateProFitWindows(void)
  1606. {    RunTimeParamRec pb;
  1607.     pb.what=195;
  1608.     CallRunTimeProc(&pb);
  1609. }        
  1610.  
  1611. FSSpecPtr GetModuleFile(void)
  1612. {
  1613.     return &pbStorage->moduleFile;
  1614. }
  1615.  
  1616.  
  1617. void OpenCurve(const Str255 curveName)
  1618. {    RunTimeParamRec pb;
  1619.     pb.what=224;
  1620.     pb.u.params.p[0]=(void*)curveName;
  1621.     CallRunTimeProc(&pb);
  1622. }        
  1623.  
  1624. void CloseCurve(void)
  1625. {    RunTimeParamRec pb;
  1626.     pb.what=216;
  1627.     CallRunTimeProc(&pb);
  1628. }        
  1629.  
  1630. void OpenDataSet(short errors, Boolean connected, const Str255 datasetName)
  1631. {    RunTimeParamRec pb;
  1632.     pb.what=225;
  1633.     pb.u.params.p[2]=&errors;
  1634.     pb.u.params.p[1]=&connected;
  1635.     pb.u.params.p[0]=(void*)datasetName;
  1636.     CallRunTimeProc(&pb);
  1637. }        
  1638.  
  1639. void CloseDataSet(void)
  1640. {    RunTimeParamRec pb;
  1641.     pb.what=217;
  1642.     CallRunTimeProc(&pb);
  1643. }        
  1644.  
  1645. void SetCurveFill(short whichAxis, short axisID)
  1646. {    RunTimeParamRec pb;
  1647.     pb.what=248;
  1648.     pb.u.params.p[1]=&whichAxis;
  1649.     pb.u.params.p[0]=&axisID;
  1650.     CallRunTimeProc(&pb);
  1651. }        
  1652.  
  1653. void SetEBarStyle(double caplength, double capThick, double lineThick)
  1654. {    RunTimeParamRec pb;
  1655.     pb.what=249;
  1656.     pb.u.params.p[2]=&caplength;
  1657.     pb.u.params.p[1]=&capThick;
  1658.     pb.u.params.p[0]=&lineThick;
  1659.     CallRunTimeProc(&pb);
  1660. }        
  1661.  
  1662. void AddDataPoint(double x, double y, double xErr, double yErr, double xErr1, double yErr1)
  1663. {    RunTimeParamRec pb;
  1664.     pb.what=250;
  1665.     pb.u.params.p[5]=&x;
  1666.     pb.u.params.p[4]=&y;
  1667.     pb.u.params.p[3]=&xErr;
  1668.     pb.u.params.p[2]=&yErr;
  1669.     pb.u.params.p[1]=&xErr1;
  1670.     pb.u.params.p[0]=&yErr1;
  1671.     CallRunTimeProc(&pb);
  1672. }        
  1673.  
  1674.  
  1675.     
  1676. void SetLineStyle(double thick, short dash)
  1677. {    RunTimeParamRec pb;
  1678.     pb.what=200;
  1679.     pb.u.params.p[1]=&thick;
  1680.     pb.u.params.p[0]=‐
  1681.     CallRunTimeProc(&pb);
  1682. }        
  1683.  
  1684. void SetFillPattern(short pattern)
  1685. {    RunTimeParamRec pb;
  1686.     pb.what=201;
  1687.     pb.u.params.p[0]=&pattern;
  1688.     CallRunTimeProc(&pb);
  1689. }        
  1690.  
  1691. void SetArrowStyle(short arrowLocation, short style, double size)
  1692. {    RunTimeParamRec pb;
  1693.     pb.what=202;
  1694.     pb.u.params.p[2]=&arrowLocation;
  1695.     pb.u.params.p[1]=&style;
  1696.     pb.u.params.p[0]=&size;
  1697.     CallRunTimeProc(&pb);
  1698. }        
  1699.  
  1700. void SetTextStyle(const Str255 fontName, double size, short style)
  1701. {    RunTimeParamRec pb;
  1702.     pb.what=203;
  1703.     pb.u.params.p[2]=(void*)fontName;
  1704.     pb.u.params.p[1]=&size;
  1705.     pb.u.params.p[0]=&style;
  1706.     CallRunTimeProc(&pb);
  1707. }        
  1708.  
  1709. void SetNewGraphRect(double left, double top, double right, double bottom)
  1710. {    RunTimeParamRec pb;
  1711.     pb.what=218;
  1712.     pb.u.params.p[3]=&left;
  1713.     pb.u.params.p[2]=⊤
  1714.     pb.u.params.p[1]=&right;
  1715.     pb.u.params.p[0]=⊥
  1716.     CallRunTimeProc(&pb);
  1717. }        
  1718.  
  1719. void SetDataPointStyle(short style, double size, double thickness)
  1720. {    RunTimeParamRec pb;
  1721.     pb.what=204;
  1722.     pb.u.params.p[2]=&style;
  1723.     pb.u.params.p[1]=&size;
  1724.     pb.u.params.p[0]=&thickness;
  1725.     CallRunTimeProc(&pb);
  1726. }        
  1727.  
  1728. void SetBGDataPointStyle(short style, double size)
  1729. {    RunTimeParamRec pb;
  1730.     pb.what=205;
  1731.     pb.u.params.p[1]=&style;
  1732.     pb.u.params.p[0]=&size;
  1733.     CallRunTimeProc(&pb);
  1734. }        
  1735.  
  1736. void SetLineColor(long red, long green, long blue)
  1737. {    RunTimeParamRec pb;
  1738.     pb.what=206;
  1739.     pb.u.params.p[2]=&red;
  1740.     pb.u.params.p[1]=&green;
  1741.     pb.u.params.p[0]=&blue;
  1742.     CallRunTimeProc(&pb);
  1743. }        
  1744.  
  1745. void SetFillColor(long red, long green, long blue)
  1746. {    RunTimeParamRec pb;
  1747.     pb.what=207;
  1748.     pb.u.params.p[2]=&red;
  1749.     pb.u.params.p[1]=&green;
  1750.     pb.u.params.p[0]=&blue;
  1751.     CallRunTimeProc(&pb);
  1752. }        
  1753.  
  1754. void DrawRect(double left, double top, double right, double bottom)
  1755. {    RunTimeParamRec pb;
  1756.     pb.what=208;
  1757.     pb.u.params.p[3]=&left;
  1758.     pb.u.params.p[2]=⊤
  1759.     pb.u.params.p[1]=&right;
  1760.     pb.u.params.p[0]=⊥
  1761.     CallRunTimeProc(&pb);
  1762. }        
  1763.  
  1764. void DrawEllipse(double left, double top, double right, double bottom)
  1765. {    RunTimeParamRec pb;
  1766.     pb.what=209;
  1767.     pb.u.params.p[3]=&left;
  1768.     pb.u.params.p[2]=⊤
  1769.     pb.u.params.p[1]=&right;
  1770.     pb.u.params.p[0]=⊥
  1771.     CallRunTimeProc(&pb);
  1772. }        
  1773.  
  1774. void DrawLine(double start_h, double start_v, double end_h, double end_v)
  1775. {    RunTimeParamRec pb;
  1776.     pb.what=210;
  1777.     pb.u.params.p[3]=&start_h;
  1778.     pb.u.params.p[2]=&start_v;
  1779.     pb.u.params.p[1]=&end_h;
  1780.     pb.u.params.p[0]=&end_v;
  1781.     CallRunTimeProc(&pb);
  1782. }        
  1783.  
  1784. void DrawTextLine(const Str255 theString, double theAngle, Boolean docenter)
  1785. {    RunTimeParamRec pb;
  1786.     pb.what=211;
  1787.     pb.u.params.p[2]=(void*)theString;
  1788.     pb.u.params.p[1]=&theAngle;
  1789.     pb.u.params.p[0]=&docenter;
  1790.     CallRunTimeProc(&pb);
  1791. }        
  1792.  
  1793.     
  1794. void DrawNumber(double theNum, short decs, double theAngle, Boolean docenter)
  1795. {    RunTimeParamRec pb;
  1796.     pb.what=212;
  1797.     pb.u.params.p[3]=&theNum;
  1798.     pb.u.params.p[2]=&decs;
  1799.     pb.u.params.p[1]=&theAngle;
  1800.     pb.u.params.p[0]=&docenter;
  1801.     CallRunTimeProc(&pb);
  1802. }        
  1803.  
  1804. void DrawDataPoint(double x, double y)
  1805. {    RunTimeParamRec pb;
  1806.     pb.what=213;
  1807.     pb.u.params.p[1]=&x;
  1808.     pb.u.params.p[0]=&y;
  1809.     CallRunTimeProc(&pb);
  1810. }        
  1811.  
  1812. void DrawPICT(double left, double top, double right, double bottom, PicHandle thePict)
  1813. {    RunTimeParamRec pb;
  1814.     pb.what=247;
  1815.     pb.u.params.p[4]=&left;
  1816.     pb.u.params.p[3]=⊤
  1817.     pb.u.params.p[2]=&right;
  1818.     pb.u.params.p[1]=⊥
  1819.     pb.u.params.p[0]=thePict;
  1820.     CallRunTimeProc(&pb);
  1821. }        
  1822.  
  1823. void GetLastClickedCoordinates(double* x, double* y)
  1824. {    RunTimeParamRec pb;
  1825.     pb.what=223;
  1826.     pb.u.params.p[1]=x;
  1827.     pb.u.params.p[0]=y;
  1828.     CallRunTimeProc(&pb);
  1829. }        
  1830.  
  1831. void DisableDrawingUpdates(void)
  1832. {    RunTimeParamRec pb;
  1833.     pb.what=226;
  1834.     CallRunTimeProc(&pb);
  1835. }        
  1836.  
  1837. void OpenPolygon(short smoothing, short kind)
  1838. {    RunTimeParamRec pb;
  1839.     pb.what=214;
  1840.     pb.u.params.p[1]=&smoothing;
  1841.     pb.u.params.p[0]=&kind;
  1842.     CallRunTimeProc(&pb);
  1843. }        
  1844.  
  1845. void ClosePolygon(void)
  1846. {    RunTimeParamRec pb;
  1847.     pb.what=215;
  1848.     CallRunTimeProc(&pb);
  1849. }        
  1850.  
  1851.  
  1852. void GroupBegin(void)
  1853. {    RunTimeParamRec pb;
  1854.     pb.what=219;
  1855.     CallRunTimeProc(&pb);
  1856. }        
  1857.  
  1858. void GroupEnd(void)
  1859. {    RunTimeParamRec pb;
  1860.     pb.what=220;
  1861.     CallRunTimeProc(&pb);
  1862. }        
  1863.  
  1864.     
  1865. void SetCurrentGraph(long graphID)
  1866. {    RunTimeParamRec pb;
  1867.     pb.what=227;
  1868.     pb.u.params.p[0]=&graphID;
  1869.     CallRunTimeProc(&pb);
  1870. }        
  1871.  
  1872. long GetCurrentGraph(void)
  1873. {    RunTimeParamRec pb;
  1874.     long    retval;
  1875.     pb.what=229;
  1876.     pb.u.params.p[0]=&retval;
  1877.     CallRunTimeProc(&pb);
  1878.     return retval;
  1879. }        
  1880.  
  1881. long GetNextGraph(long graphID)
  1882. {    RunTimeParamRec pb;
  1883.     long    retval;
  1884.     pb.what=228;
  1885.     pb.u.params.p[1]=&retval;
  1886.     pb.u.params.p[0]=&graphID;
  1887.     CallRunTimeProc(&pb);
  1888.     return retval;
  1889. }
  1890.  
  1891. void GetGraphFrame(double* left,double* top,double* right,double* bottom)
  1892. {    RunTimeParamRec pb;
  1893.     pb.what=230;
  1894.     pb.u.params.p[3]=left;
  1895.     pb.u.params.p[2]=top;
  1896.     pb.u.params.p[1]=right;
  1897.     pb.u.params.p[0]=bottom;
  1898.     CallRunTimeProc(&pb);
  1899. }
  1900.  
  1901. void SetGraphFrame(double left,double top,double right,double bottom)
  1902. {    RunTimeParamRec pb;
  1903.     pb.what=231;
  1904.     pb.u.params.p[3]=&left;
  1905.     pb.u.params.p[2]=⊤
  1906.     pb.u.params.p[1]=&right;
  1907.     pb.u.params.p[0]=⊥
  1908.     CallRunTimeProc(&pb);
  1909. }
  1910.  
  1911. short GetCurrentAxis(short whichAxis)
  1912. {    RunTimeParamRec pb;
  1913.     short    retval;
  1914.     pb.what=232;
  1915.     pb.u.params.p[1]=&retval;
  1916.     pb.u.params.p[0]=&whichAxis;
  1917.     CallRunTimeProc(&pb);
  1918.     return retval;
  1919. }
  1920.  
  1921. void SetCurrentAxis(short whichAxis, short axisID)
  1922. {    RunTimeParamRec pb;
  1923.     pb.what=233;
  1924.     pb.u.params.p[1]=&whichAxis;
  1925.     pb.u.params.p[0]=&axisID;
  1926.     CallRunTimeProc(&pb);
  1927. }
  1928.  
  1929. void DeleteAxis(short whichAxis, short axisID)
  1930. {    RunTimeParamRec pb;
  1931.     pb.what=234;
  1932.     pb.u.params.p[1]=&whichAxis;
  1933.     pb.u.params.p[0]=&axisID;
  1934.     CallRunTimeProc(&pb);
  1935. }
  1936.  
  1937. void MakeNewAxis(short whichAxis, double min, double max, short scaling, double position)
  1938. {    RunTimeParamRec pb;
  1939.     pb.what=235;
  1940.     pb.u.params.p[4]=&whichAxis;
  1941.     pb.u.params.p[3]=&min;
  1942.     pb.u.params.p[2]=&max;
  1943.     pb.u.params.p[1]=&scaling;
  1944.     pb.u.params.p[0]=&position;
  1945.     CallRunTimeProc(&pb);
  1946. }
  1947.  
  1948. void SetRange(short whichAxis, double min, double max, short scaling)
  1949. {    RunTimeParamRec pb;
  1950.     pb.what=236;
  1951.     pb.u.params.p[3]=&whichAxis;
  1952.     pb.u.params.p[2]=&min;
  1953.     pb.u.params.p[1]=&max;
  1954.     pb.u.params.p[0]=&scaling;
  1955.     CallRunTimeProc(&pb);
  1956. }
  1957.  
  1958. void MakeTicks(short whichAxis, double firstMaj, double distance, short nrMinTicks)
  1959. {    RunTimeParamRec pb;
  1960.     pb.what=237;
  1961.     pb.u.params.p[3]=&whichAxis;
  1962.     pb.u.params.p[2]=&firstMaj;
  1963.     pb.u.params.p[1]=&distance;
  1964.     pb.u.params.p[0]=&nrMinTicks;
  1965.     CallRunTimeProc(&pb);
  1966. }
  1967.  
  1968. void SetLabelsFormat(short whichAxis, short format, short decimals)
  1969. {    RunTimeParamRec pb;
  1970.     pb.what=238;
  1971.     pb.u.params.p[2]=&whichAxis;
  1972.     pb.u.params.p[1]=&format;
  1973.     pb.u.params.p[0]=&decimals;
  1974.     CallRunTimeProc(&pb);
  1975. }
  1976.  
  1977. void ClearLabels(short whichAxis)
  1978. {    RunTimeParamRec pb;
  1979.     pb.what=240;
  1980.     pb.u.params.p[0]=&whichAxis;
  1981.     CallRunTimeProc(&pb);
  1982. }
  1983.  
  1984. void ClearTicks(short whichAxis)
  1985. {    RunTimeParamRec pb;
  1986.     pb.what=239;
  1987.     pb.u.params.p[0]=&whichAxis;
  1988.     CallRunTimeProc(&pb);
  1989. }
  1990.  
  1991. short AddTick(short whichAxis, double tickPos, Boolean isMajor)
  1992. {    RunTimeParamRec pb;
  1993.     short retval;
  1994.     pb.what=241;
  1995.     pb.u.params.p[3]=&retval;
  1996.     pb.u.params.p[2]=&whichAxis;
  1997.     pb.u.params.p[1]=&tickPos;
  1998.     pb.u.params.p[0]=&isMajor;
  1999.     CallRunTimeProc(&pb);
  2000.     return retval;
  2001. }
  2002.  
  2003. void SetLabel(short whichAxis, short tickNum, double labelNumber)
  2004. {    RunTimeParamRec pb;
  2005.     pb.what=242;
  2006.     pb.u.params.p[2]=&whichAxis;
  2007.     pb.u.params.p[1]=&tickNum;
  2008.     pb.u.params.p[0]=&labelNumber;
  2009.     CallRunTimeProc(&pb);
  2010. }
  2011.  
  2012. void SetLabelText(short whichAxis, short tickNum, const Str255 labelText)
  2013. {    RunTimeParamRec pb;
  2014.     pb.what=243;
  2015.     pb.u.params.p[2]=&whichAxis;
  2016.     pb.u.params.p[1]=&tickNum;
  2017.     pb.u.params.p[0]=(void*)labelText;
  2018.     CallRunTimeProc(&pb);
  2019. }
  2020.  
  2021. void SetAxisPosition(short whichAxis, double position)
  2022. {    RunTimeParamRec pb;
  2023.     pb.what=244;
  2024.     pb.u.params.p[1]=&whichAxis;
  2025.     pb.u.params.p[0]=&position;
  2026.     CallRunTimeProc(&pb);
  2027. }
  2028.  
  2029. void SetAxisAttributes(short whichAxis, long flags)
  2030. {    RunTimeParamRec pb;
  2031.     pb.what=245;
  2032.     pb.u.params.p[1]=&whichAxis;
  2033.     pb.u.params.p[0]=&flags;
  2034.     CallRunTimeProc(&pb);
  2035. }
  2036.  
  2037. void SetGraphAttributes(long flags)
  2038. {    RunTimeParamRec pb;
  2039.     pb.what=246;
  2040.     pb.u.params.p[0]=&flags;
  2041.     CallRunTimeProc(&pb);
  2042. }
  2043.  
  2044.